{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "identified-channels",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'common' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1-f5f1754b2937>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mimp\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mreload\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0mreload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcommon\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0manalysis_helper\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     14\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mcommon\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig_helper\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mconfig_helper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'common' is not defined"
     ]
    }
   ],
   "source": [
    "import tushare as ts\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import warnings\n",
    "import sys\n",
    "import datetime\n",
    "\n",
    "sys.path.append(\"..\")\n",
    "\n",
    "from imp import reload\n",
    "\n",
    "reload(common)\n",
    "reload(common.analysis_helper)\n",
    "\n",
    "from common.config_helper import config_helper\n",
    "from common.analysis_helper import analysis_helper\n",
    "#import common.date_helper\n",
    "#reload(common.date_helper)\n",
    "\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "duplicate-skirt",
   "metadata": {},
   "outputs": [],
   "source": [
    "config = config_helper()\n",
    "start_date = \"20200101\"\n",
    "end_date = \"20201231\"\n",
    "pro = ts.pro_api(config.tushare_token)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "familiar-jacket",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ts_code</th>\n",
       "      <th>trade_date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>pre_close</th>\n",
       "      <th>change</th>\n",
       "      <th>pct_chg</th>\n",
       "      <th>vol</th>\n",
       "      <th>amount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>20201231</td>\n",
       "      <td>24.00</td>\n",
       "      <td>26.58</td>\n",
       "      <td>23.91</td>\n",
       "      <td>26.58</td>\n",
       "      <td>24.16</td>\n",
       "      <td>2.42</td>\n",
       "      <td>10.0166</td>\n",
       "      <td>626615.43</td>\n",
       "      <td>1633441.950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>20201230</td>\n",
       "      <td>23.90</td>\n",
       "      <td>24.44</td>\n",
       "      <td>23.56</td>\n",
       "      <td>24.16</td>\n",
       "      <td>24.16</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>112889.17</td>\n",
       "      <td>270370.061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>20201229</td>\n",
       "      <td>24.38</td>\n",
       "      <td>25.31</td>\n",
       "      <td>24.10</td>\n",
       "      <td>24.16</td>\n",
       "      <td>24.36</td>\n",
       "      <td>-0.20</td>\n",
       "      <td>-0.8210</td>\n",
       "      <td>105203.22</td>\n",
       "      <td>260162.007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>20201228</td>\n",
       "      <td>24.99</td>\n",
       "      <td>25.05</td>\n",
       "      <td>24.20</td>\n",
       "      <td>24.36</td>\n",
       "      <td>25.25</td>\n",
       "      <td>-0.89</td>\n",
       "      <td>-3.5248</td>\n",
       "      <td>132036.21</td>\n",
       "      <td>323597.170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>20201225</td>\n",
       "      <td>25.50</td>\n",
       "      <td>25.50</td>\n",
       "      <td>24.63</td>\n",
       "      <td>25.25</td>\n",
       "      <td>25.82</td>\n",
       "      <td>-0.57</td>\n",
       "      <td>-2.2076</td>\n",
       "      <td>168412.72</td>\n",
       "      <td>421060.629</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     ts_code trade_date   open   high    low  close  pre_close  change  \\\n",
       "0  600685.SH   20201231  24.00  26.58  23.91  26.58      24.16    2.42   \n",
       "1  600685.SH   20201230  23.90  24.44  23.56  24.16      24.16    0.00   \n",
       "2  600685.SH   20201229  24.38  25.31  24.10  24.16      24.36   -0.20   \n",
       "3  600685.SH   20201228  24.99  25.05  24.20  24.36      25.25   -0.89   \n",
       "4  600685.SH   20201225  25.50  25.50  24.63  25.25      25.82   -0.57   \n",
       "\n",
       "   pct_chg        vol       amount  \n",
       "0  10.0166  626615.43  1633441.950  \n",
       "1   0.0000  112889.17   270370.061  \n",
       "2  -0.8210  105203.22   260162.007  \n",
       "3  -3.5248  132036.21   323597.170  \n",
       "4  -2.2076  168412.72   421060.629  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_zcfw = pro.daily(ts_code=\"600685.SH\", start_date = start_date, end_date = end_date)\n",
    "df_zcfw.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "fiscal-solomon",
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'DataFrame' object has no attribute 'trade_date'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-10-e5cb2ef2df2f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0ma_helper\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0manalysis_helper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_zcfw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0ma_helper\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minit_df\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/mnt/ossfs/data/jupyter/common/analysis_helper.py\u001b[0m in \u001b[0;36minit_df\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m     19\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0minit_df\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     20\u001b[0m         \u001b[0mf_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m  \u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstrptime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"%Y%m%d\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrade_date\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrade_date\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf_time\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     22\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'trade_date'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minplace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     23\u001b[0m         \u001b[0;31m# self['rtn'] = np.log(df.close) - np.log(df.close.shift(1))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m   5139\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_can_hold_identifiers_and_holds_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   5140\u001b[0m                 \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 5141\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   5142\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   5143\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'trade_date'"
     ]
    }
   ],
   "source": [
    "\n",
    "from imp import reload\n",
    "\n",
    "a_helper = analysis_helper(df_zcfw)\n",
    "a_helper.init_df()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "substantial-atlas",
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'analysis_helper' object has no attribute 'init_df'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-14-b8f6b69d7363>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma_helper\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minit_df\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0ma_helper\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mAttributeError\u001b[0m: 'analysis_helper' object has no attribute 'init_df'"
     ]
    }
   ],
   "source": [
    "a_helper.init_df()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "representative-brazilian",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f416078f710>"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# df_zcfw.info()\n",
    "# df_zcfw.describe()\n",
    "# df_zcfw.sort_values(by='change')\n",
    "# df_zcfw.change[df_zcfw.change<0].value_counts()\n",
    "#df_zcfw.change.value_counts()\n",
    "#df_zcfw.change.isnull()\n",
    "df_zcfw.change.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "demographic-chile",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>change</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.04</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.17</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>-0.34</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.09</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.08</th>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       change\n",
       " 0.04       5\n",
       " 0.17       5\n",
       "-0.34       5\n",
       " 0.09       4\n",
       " 0.08       4"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# dfcount = df_zcfw.change.value_counts()\n",
    "#dfcount = pd.DataFrame(dfcount)\n",
    "dfcount.head()\n",
    "# dfcount.change.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "affected-cartridge",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "change    243\n",
       "dtype: int64"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfcount[dfcount.change>0].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "fewer-debate",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>change</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trade_date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-12-31</th>\n",
       "      <td>2.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-30</th>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>-0.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>-0.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-25</th>\n",
       "      <td>-0.57</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            change\n",
       "trade_date        \n",
       "2020-12-31    2.42\n",
       "2020-12-30    0.00\n",
       "2020-12-29   -0.20\n",
       "2020-12-28   -0.89\n",
       "2020-12-25   -0.57"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_change = pd.DataFrame(df_zcfw.change)\n",
    "df_change.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "crucial-wales",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>change</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trade_date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-12-30</th>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            change\n",
       "trade_date        \n",
       "2020-12-30     0.0"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "southwest-termination",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ts_code</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>pre_close</th>\n",
       "      <th>change</th>\n",
       "      <th>pct_chg</th>\n",
       "      <th>vol</th>\n",
       "      <th>amount</th>\n",
       "      <th>H2PreClose</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trade_date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-12-31</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>24.00</td>\n",
       "      <td>26.58</td>\n",
       "      <td>23.91</td>\n",
       "      <td>26.58</td>\n",
       "      <td>24.16</td>\n",
       "      <td>2.42</td>\n",
       "      <td>10.0166</td>\n",
       "      <td>626615.43</td>\n",
       "      <td>1633441.950</td>\n",
       "      <td>2.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-30</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>23.90</td>\n",
       "      <td>24.44</td>\n",
       "      <td>23.56</td>\n",
       "      <td>24.16</td>\n",
       "      <td>24.16</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>112889.17</td>\n",
       "      <td>270370.061</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>24.38</td>\n",
       "      <td>25.31</td>\n",
       "      <td>24.10</td>\n",
       "      <td>24.16</td>\n",
       "      <td>24.36</td>\n",
       "      <td>-0.20</td>\n",
       "      <td>-0.8210</td>\n",
       "      <td>105203.22</td>\n",
       "      <td>260162.007</td>\n",
       "      <td>1.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>24.99</td>\n",
       "      <td>25.05</td>\n",
       "      <td>24.20</td>\n",
       "      <td>24.36</td>\n",
       "      <td>25.25</td>\n",
       "      <td>-0.89</td>\n",
       "      <td>-3.5248</td>\n",
       "      <td>132036.21</td>\n",
       "      <td>323597.170</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-25</th>\n",
       "      <td>600685.SH</td>\n",
       "      <td>25.50</td>\n",
       "      <td>25.50</td>\n",
       "      <td>24.63</td>\n",
       "      <td>25.25</td>\n",
       "      <td>25.82</td>\n",
       "      <td>-0.57</td>\n",
       "      <td>-2.2076</td>\n",
       "      <td>168412.72</td>\n",
       "      <td>421060.629</td>\n",
       "      <td>0.87</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              ts_code   open   high    low  close  pre_close  change  pct_chg  \\\n",
       "trade_date                                                                      \n",
       "2020-12-31  600685.SH  24.00  26.58  23.91  26.58      24.16    2.42  10.0166   \n",
       "2020-12-30  600685.SH  23.90  24.44  23.56  24.16      24.16    0.00   0.0000   \n",
       "2020-12-29  600685.SH  24.38  25.31  24.10  24.16      24.36   -0.20  -0.8210   \n",
       "2020-12-28  600685.SH  24.99  25.05  24.20  24.36      25.25   -0.89  -3.5248   \n",
       "2020-12-25  600685.SH  25.50  25.50  24.63  25.25      25.82   -0.57  -2.2076   \n",
       "\n",
       "                  vol       amount  H2PreClose  \n",
       "trade_date                                      \n",
       "2020-12-31  626615.43  1633441.950        2.67  \n",
       "2020-12-30  112889.17   270370.061        0.88  \n",
       "2020-12-29  105203.22   260162.007        1.21  \n",
       "2020-12-28  132036.21   323597.170        0.85  \n",
       "2020-12-25  168412.72   421060.629        0.87  "
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "devoted-connection",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>H2PreClose</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>trade_date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-12-31</th>\n",
       "      <td>2.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-30</th>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>1.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-25</th>\n",
       "      <td>0.87</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            H2PreClose\n",
       "trade_date            \n",
       "2020-12-31        2.67\n",
       "2020-12-30        0.88\n",
       "2020-12-29        1.21\n",
       "2020-12-28        0.85\n",
       "2020-12-25        0.87"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "noticed-washington",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "metropolitan-prevention",
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "module 'pandas' has no attribute 'DateFrame'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-61-54b690786f91>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf_value_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDateFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mdf_value_count\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'total'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m243\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mdf_value_count\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'short'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m79\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pandas/__init__.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(name)\u001b[0m\n\u001b[1;32m    256\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0m_SparseArray\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    257\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m         \u001b[0;32mraise\u001b[0m \u001b[0mAttributeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"module 'pandas' has no attribute '{name}'\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    259\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    260\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mAttributeError\u001b[0m: module 'pandas' has no attribute 'DateFrame'"
     ]
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "minor-malawi",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
